'''
# -*- coding:utf-8 -*-
# @Project: DevOps_api
# @Date: 2023/3/17 - 16:23
# @Author: ysg
# @Describe: 

devops_ssh.py
'''
import os
import paramiko

localpath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'id_rsa')


def do_ssh(ip):
    '''
    产生 ssh stfp 对象
    ssh: 用于发送远程命令
    stfp: 用于上传文件
    :return: ssh stfp
    '''
    # 设置自机器参数
    key = paramiko.RSAKey.from_private_key_file(r'./DevOps_api/libs/connect_ssh/id_rsa')  # 指定本地的 RSA私钥文件
    # key = paramiko.RSAKey.from_private_key_file(
    #     r'H:\py\DevOps\DevOps_api\DevOps_api\libs\connect_ssh\id_rsa')  # 指定本地的 RSA私钥文件
    trans = paramiko.Transport((ip, 22))  # 指定 ip:port 建立连接
    trans.connect(username='root', pkey=key)  # 指定用户
    # 创建 ssh、sftp 对象
    ssh = paramiko.SSHClient()  # 创建 ssh 对象
    ssh._transport = trans  # 将 _transport 指定为上面的 trans
    sftp = paramiko.SFTPClient.from_transport(trans)  # 创建 sftp 对象，指定连接的通道
    return ssh, sftp

# 设置自机器参数
# key = paramiko.RSAKey.from_private_key_file('id_rsa')  # 指定本地的 RSA私钥文件
# trans = paramiko.Transport(('139.224.252.227', 22))  # 指定 ip:port 建立连接
# trans.connect(username='root', pkey=key)  # 指定用户

# 创建 ssh、sftp对象
# ssh = paramiko.SSHClient()  # 创建 ssh 对象
# ssh._transport = trans  # 将 _transport 指定为上面的 trans
# sftp = paramiko.SFTPClient.from_transport(trans)  # 创建 sftp 对象，指定连接的通道

# 上传文件，执行
# sftp.put(localpath='./psut.py', remotepath='/ysg/p.py')    # 上传 psut.py文件
# ssh.exec_command('chmod +x /ysg/p.py')  # 添加可执行权限，运行脚本
# stdin, stdout, stderr = ssh.exec_command('python3 /ysg/p.py')
# print(stdout.read().decode())
# print(True if stderr.read() else False)

# ssh.close()  # 关闭连接
